.TITLE TTUS .IDENT /01.00/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; ; 7-NOV-85 STEPHANIE ADAMS ; ; MODIFICATIONS: ; ;+ ; STUB PORT DRIVER FOR USER-WRITTEN PORT DRIVER ; ; THIS MODULE PROVIDES THE INTERFACE BETWEEN TTDRV AND A USER-WRITTEN ; PORT DRIVER: ; ; 1. IN THE CONTROLLER ON-LINE CODE, INITIALIZE CELLS IN THE USER ; PORT TO CONTAIN ADDRESSES OF TTDRV'S ENTRY POINTS. ; ; 2. IN THE INPUT AND OUTPUT SERVICE ROUTINES, PERFORM GENERAL TTDRV SERVICES ; ; 3. CALL THE APPROPRIATE ROUTINE IN THE PORT DRIVER VIA $MPPRO ; ;- .IF DF T$$USP .MCALL KRBDF$ .MCALL HWDDF$,UCBDF$,PRTDF$ HWDDF$ ;DEFINE HARDWARE SYMBOLS UCBDF$ ;DEFINE UCB SYMBOLS PRTDF$ ;DEFINE USER PORT OFFSETS KRBDF$ ;DEFINE KRB SYMBOLS .IIF NDF R$$MPL, .ERROR ;SUPPORTED ONLY ON M-PLUS .IIF NDF R$$CON, .ERROR ;SOME OF THE OFFSETS THAT FOLLOW REQUIRE ;THIS TO BE A SYSTEM WITH RECONFIGURATION. ; ; LOCAL DATA ; .PSECT MAP5 .PAGE .SBTTL RESUME OUTPUT ;+ ; USRESX - RESUME OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ;- USRESX:: MOV #P.RRES+120000,R0 ;SET UP USER OFFSET CALLR MAPUS1 ;AND CALL ROUTINE TO CALL USER .SBTTL ABORT OUTPUT ;+ ; USABOX - ABORT OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; U.TOC 0 ; U.TTOC 0 ;- USABOX:: MOV #P.RABO+120000,R0 ;SET UP USER ADDRESS CALLR MAPUS1 ;AND CALL ROUTINE TO CALL USER .SBTTL STOP OUTPUT ;+ ; USSTOX - STOP (SUSPEND) OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; S1.CTS 1 ;- USSTOX:: MOV #P.RSTO+120000,R0 ;SET UP USER ADDRESS CALLR MAPUS1 ;AND CALL ROUTINE TO CALL USER .SBTTL POWER UP ;+ ; USPWUP - POWER-UP. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ;- USCPUP:: MOV #P.RCPU+120000,R0 ;SET UP USER ADDRESS CALLR MAPUS1 ;AND CALL ROUTINE TO CALL USER .PAGE .SBTTL CONTROLLER ON-LINE ;+ ; USCONL - CONTROLER ON-LINE ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; R0 AND R1 ARE DESTROYED ;- USCONL:: MOV KISAR6,-(SP) ;SAVE THE CURRENT APR6 MAPPING MOV K.OWN(R2),R5 ;GET UCB ADDRESS MOV U.DCB(R5),R1 ;GET DCB ADDRESS MOV D.PCB(R1),R1 ;GET PCB ADDRESS MOV P.REL(R1),KISAR6 ;MAP TO USER TO PLUG IN OUR ADDRESSES MOV #140000,R0 ;SET UP USER ADDRESS ADD @#140000+P.ROFF,R0 ;ADD OFFSET TO TTDRV TABLE TST P.TTII(R0) ;HAS IT ALREADY BEEN INITIALIZED? BNE 10$ ;BR IF INIT. ALREADY ; ; FILL IN TT: DRIVER ENTRY POINTS ; MOV #ICHAR1,P.TTII(R0) ;INPUT INTERRUPT MOV #ODONE,P.TTOI(R0) ;OUTPUT INTERRUPT MOV #FP000,P.TTFP(R0) ;FORK PROCESSING SUBROUTINE 10$: MOV (SP)+,KISAR6 ;AND RESTORE OUR MAPPING MOV #P.RCON+120000,R0 ;GET USER OFFSET FOR ON-LINE CALLR MAPUSR ;AND CALL USER .PAGE .SBTTL UNIT ON-LINE ;+ ; USUONL - UNIT ON-LINE ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ;- USUONL:: MOV #P.RUON+120000,R0 ;SET UP USER ADDRESS CALLR MAPUS1 ;AND CALL ROUTINE TO CALL USER .SBTTL UNIT POWER-UP ;+ ; USUPUP - UNIT POWER-UP. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; R0 AND R1 ARE DESTROYED ;- USUPUP:: MOV #P.RUPU+120000,R0 ;SET UP USER ADDRESS CALLR MAPUS1 ;AND CALL ROUTINE TO CALL USER .SBTTL MODEM TIMER ;+ ; USMTIM - MODEM TIMER. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ;- USMTIM:: MOV #P.RMTI+120000,R0 ;SET UP USER ADDRESS CALLR MAPUS1 ;AND CALL ROUTINE TO CALL USER .PAGE .SBTTL CONTROLLER OFF-LINE ;+ ; USCOFF - CONTROLLER OFF-LINE ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; R0 AND R1 ARE DESTROYED ;- USCOFF:: MOV KISAR6,-(SP) ;SAVE THE CURRENT APR6 MAPPING MOV K.OWN(R2),R5 ;GET UCB ADDRESS MOV U.DCB(R5),R1 ;GET DCB ADDRESS MOV D.PCB(R1),R1 ;GET PCB ADDRESS MOV P.REL(R1),KISAR6 ;MAP TO USER TO PLUG IN OUR ADDRESSES MOV #140000,R0 ;SET UP USER ADDRESS ADD @#140000+P.ROFF,R0 ;ADD OFFSET TO TTDRV TABLE CLR (R0) ;INDICATE CONTROLLER HAS NOT ;BEEN INITIALIZED MOV (SP)+,KISAR6 ;RESTORE OUT MAPPING MOV #P.RCOF+120000,R0 ;SET UP USER ADDRESS CALLR MAPUSR ;AND CALL ROUTINE TO CALL USER .PAGE .SBTTL UNIT OFF-LINE ;+ ; USUOFF - UNIT OFF-LINE ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ;- USUOFF:: MOV #P.RUOF+120000,R0 ;SET UP USER ADDRESS CALLR MAPUS1 ;AND CALL ROUTINE TO CALL USER .PAGE .SBTTL INPUT INTERRUPT SERVICE ROUTINE ;+ ; INPUT INTERRUPT SERVICE ROUTINE. ;- $USINP:: ; TTSET$ US ;;;SAVE R2, R3 AND SET UP: ;;; R3 = CSR ADDRESS ;;; R4 = KRB ADDRESS ; MOV K.OWN(R4),R5 ;;;GET UCB ADDRESS CALL MAPD CALLR ICHAR1 ;;;DO COMMON INPUT CHARACTER ;;;PROCESSING AND RETURN .PAGE .SBTTL OUTPUT INTERRUPT SERVICE ROUTINE ;+ ; OUTPUT INTERRUPT SERVICE ROUTINE ;- $USOUT:: ; TTSET$ US ;;;SAVE R2, R3 AND SET UP: ;;; R3 = CSR ADDRESS ;;; R4 = KRB ADDRESS MOV K.OWN(R4),R5 ;;;GET UCB ADDRESS .PAGE .SBTTL START OUTPUT ;+ ; USSTAX - START OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ;- USSTAX:: MOV #P.RSTA+120000,R0 ;;;GET USER ADDRESS CALLR MAPUS1 ;;;AND GO TO THE USER ROUTINE ; CALLR OUTISR ;;;DO COMMON OUTPUT INTERRUPT PROCESSING .SBTTL CHANGE LINE PARAMETERS ;+ ; USLPAR - CHANGE LINE PARAMETERS ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ;- USLPAR:: MOV #P.RLPA+120000,R0 ;;;GET USER ADDRESS ; CALLR MAPUS1 ;;;AND GO TO THE USER ROUTINE .PAGE .SBTTL LOCAL SUBROUTINES ; ; LOCAL SUBROUTINES ; .PAGE ;+ ; MAPUSR - MAP TO AND CALL THE USER SUBROUTINE. ; ; INPUT: R0 - OFFSET IN THE USER'S CODE OF THE ROUTINE TO BE CALLED ; R5 - UCB ADDRESS ; ; R1 IS DESTROYED ; DATA APR5 IS DESTROYED FOR THE USER ROUTINE BY $MPPRO BUT ; RESTORED LATER FOR TTDRV'S USE. ;- MAPUS1: SUB #U.TSTA,R5 ;ADJUST BACK TO START OF UCB MAPUSR: MOV U.DCB(R5),R1 ;GET DCB ADDRESS MOV D.PCB(R1),R1 ;GET PCB ADDRESS MOV P.REL(R1),-(SP) ;GET APR BIAS FOR USER'S APPLICATION MOV R0,-(SP) ;SET UP VIRTUAL ADDRESS FOR USER CALL $MPPRO ;USE EXEC ROUTINE TO MAP IT AND CALL IT RETURN ;BACK TO CALLER .ENDC ;T$$USP .END